/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.dew.dao;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import pe.edu.upc.dew.model.Servicio;
import pe.edu.upc.dew.model.Venta;
import pe.edu.upc.dew.util.ConstantesGimnasio;
import pe.edu.upc.dew.util.JdbcUtils;

/**
 *
 * @author Pedro
 */
public class VentasDAOImpl implements VentasDAO {
    @Override
    public boolean registrarVenta(Venta venta){

        try {
            Connection conn = JdbcUtils.getConnection();
            Statement st = conn.createStatement();
            String sentencia ="insert into GIMNASIO_DEW.VENTA (TOTALCOSTO,FINCONTRATO,FECHAREGISTRO,COD_PAQUETE,COD_CLIENTE,COD_LOCAL ) "
                    + " values ("
                    +venta.getTotalCosto()+","
                    +"'"+(new SimpleDateFormat(ConstantesGimnasio.FORMATO_FECHA_YYYMMDD).format(venta.getFinContrato()))+"',"
                    +"CURDATE(),"//inserta fecha actual
                    +venta.getPaquete().getCodigo()+","
                    +venta.getCliente().getCodigo()+","
                    +venta.getLocal().getCodigo()
                    +");";

            System.out.println("registrando venta:"+sentencia);
            int resp = st.executeUpdate(sentencia);

            if (resp > 0) {
                //obteniendo el ultimo padre registrado
                ResultSet rs = st.executeQuery("SELECT COD_VENTA FROM GIMNASIO_DEW.VENTA where COD_PAQUETE = "+venta.getPaquete().getCodigo()+" and COD_CLIENTE ="+venta.getCliente().getCodigo()+" order by COD_VENTA desc; ");
                if(rs.next()){
                Servicio servicio;
                String cod_venta = rs.getString("COD_VENTA");
                    for (Iterator<Servicio> it = venta.getLocal().getServicio().iterator(); it.hasNext();) {

                        servicio = it.next();

                        String sentenciaDetalle = "insert into GIMNASIO_DEW.DET_VENTA (COD_VENTA, COSTO ,COD_SERVICIO ) "
                            + " values ("
                            +cod_venta+","
                            +servicio.getCosto()+","
                            +servicio.getCodigo()
                            +")";
                        System.out.println("registrando det_venta:"+sentenciaDetalle);
                        st.executeUpdate(sentenciaDetalle);
                    }
                }
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(VentasDAOImpl.class.getName()).log(Level.SEVERE, null, ex);
        }catch (IllegalStateException iex){
            System.out.println("NO SE PUDO CONECTAR A LA BD:"+iex.getMessage());
        }
        return false;
    }

    @Override
    public boolean consultarVentas(Venta venta) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
